El siguiente fragmento de código se resaltó en Visual Studio junto con una sugerencia para simplificarlo.
if ( drawMethodsDelegate != null ) drawMethodsDelegate ( e.Graphics );Cuando hice clic en la sugerencia de bombilla, Visual Studio lo refactorizó en lo siguiente
drawMethodsDelegate?.Invoke ( e.Graphics );Y no. El signo de interrogación no es un error tipográfico. No entiendo para qué se usa el signo de interrogación y no puedo encontrar nada relevante en MSDN. También miré la página Tutorial Point Delegates pero no encontré información útil.
Página Tutorial Point, página MSDN Delegados, página MSDN Control.Invoke
Este es el operador condicional nulo .
drawMethodsDelegate?.Invoke ( e.Graphics ); Siempre que drawMethodsDelegate no sea nulo, llama al método Invoke . Es un operador que se introdujo en la sexta versión de C# y puede verlo como un azúcar sintáctico, que lo ayuda a escribir menos código para manejar comprobaciones nulas.
Por último, pero no menos importante, ¡la verificación anterior también es segura para subprocesos !
Para más información por favor echa un vistazo aquí
Este es un operador de condición nula que viene con C# 6.0
https://msdn.microsoft.com/en-us/library/dn986595.aspx
significa SI drawMethodsDelegate no es nulo Invoque el método de lo contrario no haga nada.